24843
12945
Cette question a déjà des réponses ici:
Inverser une chaîne en Python
(29 réponses)
Fermé il y a 4 ans.
J'essaie d'inverser une chaîne et d'utiliser le code ci-dessous, mais la valeur de la liste inverse résultante est None.
Le code:
str_a = 'Ça bouge'
rev_word = str_a.split ()
rev_word = rev_word.reverse ()
rev_word = '' .join (rev_word)
Il renvoie le TypeError. Pourquoi? 
.reverse () renvoie None. Par conséquent, vous ne devriez pas l'affecter à une variable.
Utilisez plutôt ceci:
stra = 'Ceci est une chaîne'
revword = stra.split ()
revword.reverse ()
revword = ''. join (revword)
J'ai exécuté le code sur IDEOne pour vous afin que vous puissiez voir la sortie. (Notez également que la sortie est stringaisThis; vous pouvez utiliser `` .join (revword), avec un espace, à la place.)
Notez également que la méthode que vous avez fournie inverse uniquement les mots, pas le texte. @ ron.rothman a fourni un lien qui détaille comment inverser une chaîne dans son intégralité.
|
C'est ma façon préférée d'inverser une chaîne:
stra = "Ceci est une chaîne"
revword = stra [:: - 1]
print (revword) # "génère un sihT
ou, si vous souhaitez inverser l'ordre des mots:
revword = "" .join (stra.split () [:: - 1])
print (revword) # "string a is This"
:)
|
Divers inversions sur une chaîne:
instring = 'Ceci est une chaîne'
reversestring = instring [:: - 1]
print reversestring # gnirts a sihT
wordsreversed = '' .join (mot [:: - 1] pour mot dans instring.split ())
imprimer les mots inversés # sihT si a gnirts
revwordorder = '' .join (mot pour mot dans instring.split () [:: - 1])
print revwordorder # string a is This
revwordandorder = '' .join (mot [:: - 1] pour mot dans instring.split () [:: - 1])
print revwordandorder # gnirts a sihT
|
Pour référence future, lorsqu'un objet a une méthode comme [] .reverse (), il effectue généralement cette action sur l'objet (c'est-à-dire que la liste est triée et ne renvoie rien, None) contrairement aux fonctions intégrées comme trié qui exécutent une action sur un objet et renvoie une valeur (c'est-à-dire la liste triée)
|
>>> s = 'ceci est une chaîne'
>>> s [:: - 1]
'gnirts a siht'
>>> '' .join (inversé (s))
'gnirts a siht'
|
La boucle for itère la chaîne de la fin (dernière lettre) au début (première lettre)
>>> s = 'Vous pouvez aussi essayer ceci:]'
>>> rev = ''
>>> pour i dans la plage (len (s) - 1, -1, -1):
... rev + = s [i]
>>> rev
']: oot siht yrt nac uoY'
|
Sur la base des commentaires et autres réponses:
str_a = 'ceci est une chaîne'
rev_word = '' .join (inversé (str_a.split ()))
Le chaînage de méthodes fonctionne en Python après tout ...
|
L'inversion de liste peut être effectuée de plusieurs manières. Comme mentionné dans les réponses précédentes, deux sont très importants, un avec la fonction reverse () et deux avec la fonction de découpage. Je donne quelques idées sur lequel nous devrions préférer.
Nous devrions toujours utiliser la fonction reverse () pour l'inversion d'une liste Python. Deux raisons, une inversion sur place et deux plus rapides que les autres.
J'ai quelques chiffres pour étayer ma réponse,
Dans [15]: len (l)
Sortie [15]: 1000
Dans [16]:% timeit -n1 l.reverse ()
1 boucle, meilleur de 3: 7,87 µs par boucle
Dans [17]:% timeit -n1 l [:: - 1]
1 boucle, meilleur de 3: 10 µs par boucle
Pour une liste de 1000 entiers, la fonction reverse () a été plus performante que le découpage.
|
Ce n'est pas la réponse que vous recherchez? Parcourez les autres questions étiquetées python ou posez votre propre question.